From: Aaron Schulz Date: Tue, 4 Oct 2016 11:24:25 +0000 (-0700) Subject: Make server index validity checks in LoadBalancer actually work X-Git-Tag: 1.31.0-rc.0~5145^2 X-Git-Url: http://git.cyclocoop.org//%22http:/%22.attribut_html%28%24lesurls%5B%24numero%5D%29.%22/%22?a=commitdiff_plain;h=9fd0c1d5e7046f0cf6fcb4e4890196cd3214d16b;p=lhc%2Fweb%2Fwiklou.git Make server index validity checks in LoadBalancer actually work Change-Id: I8f0fd802ee3ce67903af5a83ec07dc0506ec84ba --- diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 31c022c7f9..0c829685bf 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -663,6 +663,10 @@ class LoadBalancer implements ILoadBalancer { } elseif ( isset( $this->mConns['local'][$i][0] ) ) { $conn = $this->mConns['local'][$i][0]; } else { + if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { + throw new InvalidArgumentException( "No server with index '$i'." ); + } + // Open a new connection $server = $this->mServers[$i]; $server['serverIndex'] = $i; $conn = $this->reallyOpenConnection( $server, false ); @@ -743,6 +747,9 @@ class LoadBalancer implements ILoadBalancer { ": reusing free connection from $oldDomain for $domain" ); } } else { + if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { + throw new InvalidArgumentException( "No server with index '$i'." ); + } // Open a new connection $server = $this->mServers[$i]; $server['serverIndex'] = $i; @@ -795,17 +802,11 @@ class LoadBalancer implements ILoadBalancer { * @throws DBAccessError * @throws InvalidArgumentException */ - protected function reallyOpenConnection( $server, $dbNameOverride = false ) { + protected function reallyOpenConnection( array $server, $dbNameOverride = false ) { if ( $this->disabled ) { throw new DBAccessError(); } - if ( !is_array( $server ) ) { - throw new InvalidArgumentException( - 'You must update your load-balancing configuration. ' . - 'See DefaultSettings.php entry for $wgDBservers.' ); - } - if ( $dbNameOverride !== false ) { $server['dbname'] = $dbNameOverride; }